home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 November / Chip Kasım 2000.iso / prog / cdr / 10 / setup.exe / cdwacc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-13  |  17.3 KB  |  367 lines

  1. /******************************************************************************
  2.  
  3.   cdwacc.h
  4.  
  5.   Purpose:     CD Writer Access library header file
  6.  
  7.   Author:      MM, RSJ Software
  8.  
  9.   Date:        04/98
  10.  
  11.   Modifications: 
  12.     ** none **
  13.  
  14.   Copyright (c) 1997 by RSJ Software GmbH, Germering, All rights reserved
  15.  
  16. ******************************************************************************/
  17.  
  18. #ifndef _CDWACC_H_
  19.  
  20. #define _CDWACC_H_
  21.  
  22. #ifdef __cplusplus 
  23.   extern "C" {
  24. #endif
  25.  
  26. #pragma pack(1)
  27.  
  28. /*------- defines -----------------------------------------------------------*/
  29.  
  30. /*******************************************************************************
  31.   'CDWACCRET' defines all available return codes from calls to the CD library
  32.   functions (such as the track copy library).
  33.  
  34.   NOTES: CDWACCRET is not defined as an enum to allow using these constants
  35.    together with resource compilers and alike.
  36.  
  37.    Although defined in groups, expect each error to be returned by
  38.    any call.
  39. *******************************************************************************/
  40.  
  41. #define CDWACC_OK                  0   /* no error */
  42.  
  43. /* general errors */
  44. #define CDWACC_FAILED_TO_OPEN      1   /* failed to open VXD */
  45. #define CDWACC_INVALID_PARM        2   /* invalid parameter was passed */
  46.  
  47. /* opening the device */
  48. #define CDWACC_DEVICE_NOT_FOUND  100   /* device could not be found */
  49. #define CDWACC_FILE_NOT_FOUND    101   /* file could not be found (cdfile) */
  50. #define CDWACC_PATH_NOT_FOUND    102   /* path could not be found (cdfile) */
  51. #define CDWACC_ACCESS_DENIED     103   /* access denied for some reason */
  52. #define CDWACC_DEVICE_LOCKED     104   /* device locked by another process */
  53. #define CDWACC_INVALID_DEVICE    105   /* invalid device type */
  54. #define CDWACC_INVALID_DRIVER    106   /* driver module in error */
  55. #define CDWACC_NOT_READY         107   /* device not ready */
  56. #define CDWACC_OUTOFMEM          108   /* out of memory */
  57.  
  58. /* working with the device */
  59. #define CDWACC_ARENA_TRASHED     200   /* internal control structures damaged */
  60. #define CDWACC_INVALID_HANDLE    201   /* invalid device handle */
  61. #define CDWACC_INVALID_FUNC      202   /* invalid function */
  62. #define CDWACC_INVALID_DATA      203   /* invalid data for function */
  63. #define CDWACC_NOT_SUPPORTED     204   /* function not supported */
  64. #define CDWACC_IOCTL_ERROR       205   /* generic IOCtl error */
  65. #define CDWACC_UNIT_ATTENTION    206   /* illegal medium change */
  66. #define CDWACC_RECORDER_BUSY     207   /* recorder cannot process the requested
  67.                                           command at this time */
  68. #define CDWACC_INTERRUPTED       208   /* the command has been interrupted */
  69. #define CDWACC_NOBLANKIFCHANGED  209   /* CD has been modified in current session
  70.                                             and cannot be blanked; close it first */
  71.  
  72. /* reading and writing */
  73. #define CDWACC_WRITE_PROTECT     300   /* medium and/or device write protected */
  74. #define CDWACC_DISK_FULL         301   /* disk full */
  75. #define CDWACC_CRC_ERROR         302   /* data error (read or write) */
  76. #define CDWACC_SEEK_ERROR        303   /* sector address out of range */
  77. #define CDWACC_READ_ERROR        304   /* logical read error */
  78. #define CDWACC_WRITE_ERROR       305   /* logical write error */
  79. #define CDWACC_GEN_FAILURE       306   /* general failure */
  80. #define CDWACC_FLUSH_FAILED      307   /* FLUSH CACHE command failed, but drive is not in write mode anymore */
  81.  
  82. /* copying tracks */
  83. #define CDWACC_BUFFER_UNDERRUN   400   /* data could not be written in time */
  84. #define CDWACC_COPY_ABORTED      401   /* operator has cancelled the copy operation */
  85. #define CDWACC_BUFFER_OVERFLOW   402   /* audio data could not be read in time */
  86.  
  87. /* file system errors */
  88. #define CDWACC_INVALID_FORMAT    500   /* invalid file system format */
  89. #define CDWACC_NO_MORE_HANDLES   501   /* no more handles available (out of memory) */
  90. #define CDWACC_NO_MORE_FILES     502   /* no more files in this directory */
  91. #define CDWACC_INVALID_DIRECTORY 503   /* invalid directory in path name */
  92. #define CDWACC_DIR_NOT_EMPTY     505   /* directory is not empty (rmdir) */
  93. #define CDWACC_NEGATIVE_SEEK     506   /* negative seek offset */
  94. #define CDWACC_SHARING_VIOLATION 507   /* file already used by someone else */
  95. #define CDWACC_ADDRESS_CHANGED   508   /* locked cache file or write handle could not be written at the predetermined address */
  96. #define CDWACC_CACHE_FULL        509   /* the 2nd-level cache is full */
  97. #define CDWACC_FILE_TOO_SMALL    510   /* file is to small to be copied directly (use standard copy algorithm instead) */
  98.  
  99. /* use a generic data type to prevent sizeof() trouble */
  100. typedef short CDWACCRET;
  101.  
  102. #define CDWACCLNK  extern CDWACCRET __stdcall
  103.  
  104. /*------- typedefs ----------------------------------------------------------*/
  105. /******************************************************************************
  106.   NOTE:
  107.   All structures have a 'cb' member wich must hold the size of the structure
  108.   before calling any function. Currently, this is not checked but needed for
  109.   future versions.
  110. ******************************************************************************/
  111.  
  112. /******************************************************************************
  113.   DRVMAP
  114.   receives all drive letters handled by the RSJ CD Writer Filesystem
  115.   (i.e. if DRVMAP contains 'DEF' drives D:, E: and F: are CDWFS drives)
  116. ******************************************************************************/
  117. typedef char  DRVMAP[25];
  118.  
  119. /******************************************************************************
  120.   'CDWACC_FINALIZE_MODE' defines the various modes available for the 
  121.   'cdwFinalize' function.
  122. ******************************************************************************/
  123. typedef enum {
  124.   CDWACC_FINALIZE_NONE,          /* just detach drive 
  125.                                     (no data written, no buffers flushed!) */
  126.   CDWACC_FINALIZE_CACHE,         /* write cache buffer to disk - 
  127.                                     not needed anymore (only for compatibility
  128.                                     reasons) */
  129.   CDWACC_FINALIZE_DIRECTORY,     /* write cache buffer + directory to disk */
  130.   CDWACC_FINALIZE_SESSION,       /* write PVD + session header to disk */
  131.   CDWACC_FINALIZE_SEAL           /* like FLUSH_SESSION, but make CD read-only */
  132.   } enum_CDWACC_FINALIZE_MODE;
  133.  
  134. /* use a short to prevent sizeof(enum) differences */
  135. typedef short CDWACC_FINALIZE_MODE;
  136.  
  137. /*******************************************************************************
  138.   'CDWACC_TRACK_MODE' defines all available track modes.
  139. *******************************************************************************/
  140. typedef enum {
  141.   CDWACC_TM_MODE1 = 0x01,        /* CDROM, 2048 bytes, ECC */
  142.   CDWACC_TM_MODE2 = 0x02         /* CD XA, 2048-2324 bytes */
  143.   } enum_CDWACC_TRACK_MODE;
  144.  
  145. /* use a short to prevent sizeof(enum) differences */
  146. typedef short CDWACC_TRACK_MODE;
  147.  
  148.  
  149. /******************************************************************************
  150.   'CDWACC_CD_INFO' contains information about the CD. This includes
  151.   track/session information, information about the number of files and
  152.   directories on the CD
  153.   
  154.   Used by the 'cdwGetCDInfo ' function
  155.  
  156.   NOTE: We're using longs for all fields to prevent problems with languages
  157.         like Visual Basic
  158. ******************************************************************************/
  159. typedef struct {
  160.   long    cb;                   /* size of structure */
  161.   long    file_count;           /* number of files on the CD */
  162.   long    dir_count;            /* number of directories on the CD */
  163.   long    file_disk_usage;      /* volume space occupied by files */
  164.   long    dir_disk_usage;       /* volume space occupied by directories */
  165.  
  166.   long    finalized_sessions;   /* number of finalized sessions on the CD */
  167.   long    open_session;         /* currently open session */
  168.   long    track_count;          /* number of tracks on the CD */
  169.   long    reserved_track;       /* currently reserved track */
  170.   long    fixation_recommended; /* power calibration area almost full */
  171.   long    modified;             /* CD has been modified */
  172.  
  173.   } CDWACC_CD_INFO;
  174.  
  175. /******************************************************************************
  176.   'CDWACC_VOL_INFO'
  177.   not needed yet since setting and retrievinbg volume information is not
  178.   yet supported
  179.   this will be added in a future release
  180. ******************************************************************************/
  181. typedef struct {
  182.   unsigned short cb;            /* size of structure */
  183.   } CDWACC_VOL_INFO;
  184.  
  185. /*******************************************************************************
  186.   'CDWACC_FSPARMS' contains general information about the file system status
  187.   and its environment.
  188.  
  189.   NOTE: We're using longs for all fields to prevent problems with languages
  190.         like Visual Basic
  191. *******************************************************************************/
  192. typedef struct {
  193.   long                cb;         /* size of structure */
  194.  
  195.   /* parameters which can be modified anytime */
  196.   long                debug;      /* print debug messages */
  197.   long                eject;      /* eject CD after finalizing */
  198.   long                nolock;     /* don't lock drive door while
  199.                                      CD is mounted */
  200.   long                speed;      /* speed factor (1 = 150K, 2 = 300K, ...) */
  201.   long                emulation;  /* emulation write */
  202.   long                nozap;      /* prevent overwriting or deleting files 
  203.                                      not implemented yet in Win95 */
  204.   long                tmode;      /* track mode for next track */
  205.   long                iso_level;  /* ISO9660 Information Interchange Level
  206.                                      (determines how ISO9660 filenames are built
  207.                                       when closing the CD) */
  208.  
  209.   /* parameters which can only be changed during 'fsMount()' */
  210.   unsigned long       cache_1;     /* size of RAM cache (in KB) */
  211.   unsigned long       cache_2;     /* size of second level cache
  212.                                       (ignored in Win95) */
  213.   char                cache_path[260];
  214.                                    /* path where the 2nd-level cache
  215.                                        files will be placed
  216.                                        (ignored in Win95) */
  217.  
  218.  
  219.   /* parameters which can only be read */
  220.   long                ver_major;  /* major file system version number */
  221.   long                ver_minor;  /* minor file system version number */
  222.  
  223.   } CDWACC_FSPARMS;
  224.  
  225. /*******************************************************************************
  226.   'CDWACC_DEV_TYPE' defines all supported CD device types. 
  227. *******************************************************************************/
  228. typedef enum {
  229.   CDWACC_DVT_CDROM,                        /* CDROM drive */
  230.   CDWACC_DVT_CDREC,                        /* CD recorder */
  231.   CDWACC_DVT_CDRW,                         /* CD recorder with RW capabilities */
  232.   CDWACC_DVT_HD                            /* hard disk (CDR emulation) 
  233.                                                 (not used with the file system) */
  234.   } enum_CDWACC_DEV_TYPE;
  235.   
  236. /* use a long to prevent sizeof(enum) differences */
  237. typedef long CDWACC_DEV_TYPE;
  238.  
  239.  
  240. /*******************************************************************************
  241.   'CDWACC_DEV_CAPS' contains information about the device capabilities.
  242.   NOTE: We're using longs for all fields to prevent problems with languages
  243.         like Visual Basic
  244. *******************************************************************************/
  245. typedef struct {
  246.   long        cb;                 /* size of structure */
  247.   long        removable;          /* device uses removable media */
  248.   long        writable;           /* device is able to write data */
  249.   long        session;            /* device supports (or needs) sessions */
  250.   long        rmtrack;            /* device can remove single tracks */
  251.  
  252.   /* audio parameters are not used with the file system */
  253.   long        read_audio;         /* device can read audio tracks */
  254.   long        play_audio;         /* device can play audio tracks */
  255.  
  256.   long        speed_count;        /* number of possible speeds */
  257.   long        speed_table[20];    /* array with possible recording speed factors */
  258.   
  259.   long        dev_type;           /* type of CD recorder */
  260.  
  261.   } CDWACC_DEV_CAPS;
  262.  
  263.  
  264. #pragma pack()
  265.  
  266.  
  267. /*------- function prototypes -----------------------------------------------*/
  268. /******************************************************************************
  269.  
  270.   NOTES:
  271.   Most functions expect a drive as input parameter. This should be in the
  272.   format "<drive_letter>:" (not case sensitive)
  273.   for example
  274.        F:
  275.  
  276. ******************************************************************************/
  277.  
  278. /******************************************************************************
  279.   'cdwGetDriveLetters' returns the drive letters handled by the CD Writer File
  280.   system in a character array.
  281.   (i.e. if DRVMAP contains 'DEF' then drives D:, E: and F: are CDWFS drives)
  282. ******************************************************************************/
  283. CDWACCLNK      cdwGetDrvLetters      (DRVMAP drvmap);
  284.  
  285. /******************************************************************************
  286.   'cdwGetDevCaps' retrieves the device capabilites of a CDWFS drive
  287.   see description of the CDWACC_DEV_CAPS structure for more details
  288. ******************************************************************************/
  289. CDWACCLNK      cdwGetDevCaps         (char *drive_ltr,
  290.                                       CDWACC_DEV_CAPS *dev_caps);
  291.  
  292. /******************************************************************************
  293.   'cdwGetParms' returns the current file system settings. These settings
  294.   are also displayed in the drives' property sheet (in "My Computer")
  295. ******************************************************************************/
  296. CDWACCLNK      cdwGetParms           (char *drive_ltr,
  297.                                       CDWACC_FSPARMS *pfsparms);
  298.  
  299. /******************************************************************************
  300.   'cdwSetParms' sets the new file system settings. These settings are stored
  301.   as default values for the drive specified (remain after reboot)
  302. ******************************************************************************/
  303. CDWACCLNK      cdwSetParms           (char *drive_ltr,
  304.                                       CDWACC_FSPARMS *pfsparms);
  305.  
  306. /******************************************************************************
  307.   'cdwFormat' formats a new CD
  308. ******************************************************************************/
  309. CDWACCLNK      cdwFormat             (char *drive_ltr);
  310.  
  311. /******************************************************************************
  312.   'cdwUnseal' removes the write protection from a sealed CD (a CD closed with
  313.   the CDWACC_UMOUNT_SEAL mode)
  314. ******************************************************************************/
  315. CDWACCLNK      cdwUnseal             (char *drive_ltr);
  316.  
  317. /******************************************************************************
  318.   'cdwEraseCDRW' erases a CD-RW completely.
  319.   There must be no open/modified sessions on the CD before executing this
  320.   command
  321. ******************************************************************************/
  322. CDWACCLNK      cdwEraseCDRW          (char *drive_ltr);
  323.  
  324. /******************************************************************************
  325.   'cdwGetCDInfo' retrieves information about a CD that can be used for
  326.   displaying a chkdsk result etc.
  327. ******************************************************************************/
  328. CDWACCLNK      cdwGetCDInfo          (char *drive_ltr,
  329.                                       CDWACC_CD_INFO *pcdinfo,
  330.                                       CDWACC_VOL_INFO *should_be_NULL,
  331.                                       long *free_space,
  332.                                       long *disk_space);
  333.  
  334. /******************************************************************************
  335.   'cdwUmount' closes the current session.
  336.   For available modes, see the CDWACC_UMOUNT_MODE enumeration above
  337.   NOTE:
  338.   This function does not return an error if the drive specified is
  339.   currently not mounted (or no CD inserted)
  340. ******************************************************************************/
  341. CDWACCLNK      cdwUmount             (char *drive_ltr,
  342.                                       CDWACC_FINALIZE_MODE  mode,
  343.                                       CDWACC_VOL_INFO *should_be_NULL);
  344.  
  345. /******************************************************************************
  346.   'cdwGetVersion' returns version information for this library.
  347.   To retrieve the file system version, use the 'cdwGetFSParms' command
  348. ******************************************************************************/
  349. CDWACCLNK      cdwGetVersion         (BYTE *major, BYTE *minor);
  350.  
  351.  
  352. /******************************************************************************
  353.   'cdwEjectMedium' ejects the medium in the specifed drive
  354. ******************************************************************************/
  355. CDWACCLNK      cdwEjectMedium        (char *drv_ltr);
  356.  
  357.  
  358.  
  359. CDWACCLNK      cdwSetBootfile        (char *Drive,
  360.                                       char *BootfileName);
  361.  
  362.  
  363. #ifdef __cplusplus 
  364. }
  365. #endif
  366.  
  367. #endif